public class code3 {
    public int deleteAndEarn(int[] nums) {
        //arr[i]:i这个数字出现的总和
        int[] arr = new int[10001];//因为nums较小，直接开1001这么大的空间，就不用再去找nums中的最大值了

        for(int x:nums) arr[x]+= x;

        //下面对arr数字进行打家劫舍即可
        int n = arr.length;

        int[] f = new int[n];
        int[] g = new int[n];

        f[0] = arr[0];

        for (int i = 1; i < n; i++) {
            f[i] = g[i-1] + arr[i];
            g[i] = Math.max(f[i-1],g[i-1]);
        }
        return Math.max(f[n-1],g[n-1]);
    }
}
